#include<iostream>
#include<fstream>
#include<string>
#include<cstdlib>
#include<math.h>
#include<time.h>
using namespace std;

#define lon unsigned long long
#define forn(i,n) for(int (i)=0;(i)<(n);(i)++)
#define O(n) contador+=(n)
lon contador; //el contador de la cantidad de operaciones

// devuelve el primo mas chico que divide a n
lon menorPrimo(lon n){
	if(n%2==0)return 2;
	if(n%3==0)return 3;
	lon m=6;
	O(3);
	while(m<=sqrt(n)+1){ //todos los primos mayores a 3 son de la forma 6m+1 o 6m-1
		if(n%(m-1)==0)return m-1;
		if(n%(m+1)==0)return m+1;
		m+=6;
		O(3);
	}
	return n;
}

//devuelve la suma de los divisores propios de n
lon sumProperDivisors(lon nat){
	lon n=nat;
	lon sum=1;
	while(nat>1){
		int m=0;
		lon p=menorPrimo(nat); //pido un primo divisor
		while(nat%p==0){ //mientras este primo lo divida, hago la division
			nat/=p;
			m++;
			O(3);
		}
		sum*=((pow(p,m+1)-1)/(p-1));
		//la suma de los divisores de un numero es: 
		// productoria{ (p^(m+1)-1) / (p-1)  |  para todo p primo divisor de N, m=cantidad de veces que lo divide }
		O(5);
	}
	sum-=n; //le resto n asi tengo la suma de los divisores propios
	O(3);
	return sum;
}

lon amigo(lon n){
	lon a=sumProperDivisors(n);
	O(3);
	// a es amigo de n si sumProperDiv(n)=a y sumProperDiv(a)=n  (y no es el mismo)
	if(sumProperDivisors(a)==n && a!=n) return a;
	else return 0; //si no tiene amigo devuelvo 0
}

int main(int argc,char** argv){
	clock_t start,end;
	string line;
	while(cin >> line && line!="-1"){ //tomo los datos de stdin
		lon n=strtoull(line.c_str(),NULL,10); // convierto la entrada a unsigned lon long
		
		if(argc>1 && string(argv[1])=="time"){ //si el primer argumento es "time" mido tiempos..
			float secs=argc>2?secs=atof(argv[2]):0.5; //lo ejecuto hasta que tarde al menos secs segundos, para tener presicion (0.5 por default)
			int tries=argc>3?tries=atoi(argv[3]):1; // tomo el tiempo times veces por dato de entrada, para disminuir el error
			forn(tr,tries){
				start = clock(); //guardo el tiempo
				lon cont=0;
					while((double)(clock()-start)/CLOCKS_PER_SEC<secs){ //evaluo la funcion hasta que tarde al menos secs
						amigo(n);
						cont++;
					}
				end = clock(); //guardo el tiempo de finalizacion
				double tiempo=(double)(end-start)/(CLOCKS_PER_SEC*cont);
				//el tiempo total de evaluacion es lo_que_tardo/cantidad_de_veces_que_lo_llamo
				printf("%.8f ",tiempo); //imprimo el resultado con 8 decimales de presicion
			}
			cout << endl;
			
		}else if(argc>1 && string(argv[1])=="count"){ // si el argumento es "count", cuento cantidad de operaciones..
			contador=0;
			amigo(n);
			cout << contador << endl; //imprimo la cuenta
			
		}else{ //si no me pasan argumentos devuelvo el resultado
			cout << amigo(n) << endl;
		}
	}
	return 0;
}
